const path = require('path')
const HtmlWebpackPlugin = require('html-webpack-plugin');
const VueLoaderPlugin = require('vue-loader/lib/plugin');
const autoprefixer = require('autoprefixer');
module.exports = {
  // 配置入口文件 入口的值可以是一个字符串 也可以是一个对象
  // entry: './src/main.js'
  entry: {
    // 入口文件是对象的时候 对象的key(在不配置output的时候)会作为默认生成的js文件的文件名称
    index: './src/main.js'
  },
  // 打包输出文件的相关配置
  // publicPath : __dirname + '/static/' 表示publicpath(资源引入路径)为绝对路径
  // publicPath: '/' 资源引入从根目录开始
  // publicPath: './' 代表相对路径
  output: {
    publicPath: '/', // 公共资源引入的路径
    path: path.resolve(__dirname, 'dist'), // 将打包生成的文件夹解析到当前项目的跟目录中
    filename: '[name].[chunkhash:8].bundle.js' // 打包生成的js文件的名称
  },
  module: {
    rules: [{
        test: /\.js$/,
        exclude: /node_modules/,
        use: 'babel-loader'
      },
      {
        test: /\.css$/,
        use: [
          'style-loader',
          'css-loader',
          {
            loader: 'postcss-loader',
            options: {
              plugins: [autoprefixer(['last 2 version', '> 1%', 'not ie < 11'])]
            }
          }
        ]
      },
      {
        test: /\.(png|svg|jpg|gif|ttf|woff)$/,
        use: {
          loader: 'url-loader',
          options: {
            // 当小于3k的时候，会直接将图片转换成base64,减少请求
            limit: 3 * 1024,
            // 比如原来图片叫bg.jpg,打包后就会在dist文件夹下面生成bg-aaa.jpg
            name: '[name]-aaa.[ext]'
          }
        }
      },
      {
        test: /\.vue$/,
        loader: 'vue-loader'
      }
    ]
  },
  plugins: [
    new VueLoaderPlugin(),
    new HtmlWebpackPlugin({
      //引用的模板文件路径
      template: './public/index.html',
      filename: 'index.html'
    })
  ],
}